]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Defer initializing UI until after the global session has loaded
authorJasper St. Pierre <jstpierre@mecheye.net>
Mon, 18 Feb 2013 10:26:25 +0000 (05:26 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Wed, 6 Mar 2013 19:55:58 +0000 (14:55 -0500)
https://bugzilla.gnome.org/show_bug.cgi?id=694321

js/ui/main.js
js/ui/sessionMode.js

index 015b4b62038a60a0d92770dc7c4c31bfd4db047a..936d74ee4906b304c0329ea20cc4f8bd8dd3955a 100644 (file)
@@ -98,19 +98,21 @@ function start() {
 
     Gio.DesktopAppInfo.set_desktop_env('GNOME');
 
-    sessionMode = new SessionMode.SessionMode();
+    shellDBusService = new ShellDBus.GnomeShell();
+    shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
 
-    // start session after we know what mode we're running in
-    let signalId = sessionMode.connect('updated', function() {
-                                           sessionMode.disconnect(signalId);
-                                           startSession();
-                                       });
+    sessionMode = new SessionMode.SessionMode();
+    sessionMode.connect('sessions-loaded', _sessionsLoaded);
+    sessionMode.init();
 }
 
-function startSession() {
-    shellDBusService = new ShellDBus.GnomeShell();
-    shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
+function _sessionsLoaded() {
+    sessionMode.connect('updated', _sessionUpdated);
+    _initializeUI();
+    _sessionUpdated();
+}
 
+function _initializeUI() {
     // Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
     // also initialize ShellAppSystem first.  ShellAppSystem
     // needs to load all the .desktop files, and ShellWindowTracker
index e926ba2e73dbfe8717b643a0c11d457faabb65d9..7d6b2e4f6468aa1e19cec3afe4f6ddf5e891263d 100644 (file)
@@ -158,12 +158,7 @@ function listModes() {
 const SessionMode = new Lang.Class({
     Name: 'SessionMode',
 
-    _init: function() {
-        global.connect('notify::session-mode', Lang.bind(this, this._sync));
-        this._modes = _modes;
-        this._modeStack = [DEFAULT_MODE];
-        this._sync();
-
+    init: function() {
         _getModes(Lang.bind(this, function(modes) {
             this._modes = modes;
             let primary = modes[global.session_mode] &&
@@ -171,6 +166,8 @@ const SessionMode = new Lang.Class({
             let mode = primary ? global.session_mode : 'user';
             this._modeStack = [mode];
             this._sync();
+
+            this.emit('sessions-loaded');
         }));
     },